/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BussinesLogic;

import DataAccess.Dao_Deportista;
import DataAccess.Dao_Persona;
import DataModel.*;
import java.util.Calendar;
import java.util.Date;

public class BL_Deportista {
    
    private Dao_Deportista dao_deportista;
    
    public BL_Deportista(){
        dao_deportista = new Dao_Deportista();
    }
    
    public Request registrarDeportista(String id, String nombre, String apellido, String paisNac, Date fechaNac,
                                        String estatura, String peso, String disciplina, String foto, String paisRep){
        
        Request rqst = new Request();
        double est;
        int pes;
        java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("d-M-yyyy");        
        try {
            fechaNac = formato.parse(formato.format(fechaNac));
        } catch (Exception ex) {
            rqst.setTransac(false);
            rqst.setMessage(ex.getMessage());
            return rqst;
        }
        try{
            est = Double.parseDouble(estatura);
            pes = Integer.parseInt(peso);
        }
        catch(NumberFormatException e){
            rqst.setTransac(false);
            rqst.setMessage("El formato del valor de estatura y/o peso no son permitidos");
            return rqst;
        }
        
        rqst = this.checkEdad(fechaNac);
        if(!rqst.getTransac()) return rqst;
        
        Deportista deportista = new Deportista();
        deportista.setIdentificacion(id);
        deportista.setNombre(nombre);
        deportista.setApellido(apellido);
        deportista.setLugarNac(paisNac);
        deportista.setFechaNac(fechaNac);
        deportista.setEstatura(est);
        deportista.setPeso(pes);
        Disciplina disc = new Disciplina();
        disc.setNombre(disciplina);
        deportista.setDisciplina(disc);
        deportista.setFoto(foto);
        deportista.setPaisRepresenta(paisRep);
        
        
        Dao_Persona dao_persona = new Dao_Persona();
        rqst = dao_persona.registrarPersona(deportista);
        if(!rqst.getTransac()) return rqst;        
        
        rqst = dao_deportista.registrarDeportista(deportista);
        if(!rqst.getTransac()){
            dao_persona.eliminarPersona(deportista);
        }
        
        return rqst;   
    }   
    
    public Request checkEdad(Date fechaNac){
        
        Request rqst = new Request();
        Calendar calActual = Calendar.getInstance();
        calActual.set(Calendar.YEAR,calActual.get(Calendar.YEAR)-16);
        Date d = calActual.getTime();
        System.out.println(fechaNac + " hoy" + d);
        System.out.println(d.compareTo(fechaNac));
        if(d.compareTo(fechaNac)==1) rqst.setTransac(true);
        else{
            rqst.setTransac(false);
            rqst.setMessage("El deportista no cumple con la edad requerida");
        }
        
        return rqst;
    }
}
